import Vue from 'vue'
import axios from 'axios';
import qs from 'qs';
import util from '../common/util.js'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
//请求顶部进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
// 使用element UI
Vue.use(ElementUI);
/**
 * config.BaseUrl 基础服务器地址
 * config.loginUrl token过期访问地址
 * */

let AjaxManager=function(config) {

    /**
     * params.action 访问服务器的地址
     * params.method 访问方式，默认为post
     * params.responseType 默认为jsonp
     * params.data post方式下提交的数据
     */
    this.http= function (params) {
        const promise = new Promise(function (resolve, reject) {
            
            //判断url是否有http、https如果有则不拼接服务器地址
            let tUrl = params.url;

            if(!util.isEmpty(params.url))
            {
                if (tUrl.toLocaleLowerCase().indexOf("http://") >= 0 || tUrl.toLocaleLowerCase().indexOf("https://") >= 0) {
                    tUrl = params.url;
                }
                else
                    tUrl =  config.BaseUrl + "/" + params.url;
            }

            if(!util.isEmpty(params.action))
            {
                tUrl =  config.BaseUrl + "/" + params.action;
            }

            if(util.isEmpty(params.method))
            {
                params.method="post";
            }

            if(util.isEmpty(params.responseType))
            {
                params.responseType="jsonp";
            }

            axios.defaults.withCredentials=true;
			NProgress.start()
            //调用ajax
            axios({
                method: params.method
                ,responseType: params.responseType //'jsonp',
                ,url: tUrl
                ,data:params.data
                ,headers:params.headers
				,withCredentials : true
            }).then(function (response) {
                // console.debug("response=",response);
                //判断请求是否过期或未登录
                if(response.data){
					
                    if(response.data.code== 501){
						
                        window.location.href=config.loginUrl;
						
                    }else if(response.data.code=="1027"){
						let vue = new Vue();
						vue.$message.error(response.data.message);
					}
                }
                resolve(response);
				NProgress.done()
            }).catch(function (error) {

                
                console.error("AjaxManager.http() error=" + error);
                console.info("AjaxManager.http() params=", params);
            });

        });

        return promise;
    }
}

export default AjaxManager;